var { swipeRandom } = require("./common/common.js");
var douyinUtils = require("./common/douyinUtils.js");
//参数声明
var storage = storages.create("autotouchDouyin");
var appPackageName = "com.ss.android.ugc.aweme";
var pointObj = { pinglun: {} };
var dzPicChaObj = { weizhi: {}, dzPicCha: 0 };

// var pinglunReg = RegExp(/跑断腿|捡我|捡粉|自媒体|必回|诚信|互|活跃|大学生/);
// var pinglunfanye = Number(5);
// var pinglunsList = "来互,欢迎来互，有赞必回,诚信的来看数据就懂！";
// pinglunsList = pinglunsList.split(',');

//等待
sleep(1000)
//安卓版本高于Android 9
if (device.sdkInt > 28) {
    //等待截屏权限申请并同意
    threads.start(function () {
        packageName('com.android.systemui').text('立即开始').waitFor();
        text('立即开始').click();
    });
}
//申请截屏权限
if (!requestScreenCapture()) {
    toast("请求截图失败");
    exit()
}

var deviceWidth = device.width;
var deviceHeight = device.height;
log('分辨率', deviceWidth, deviceHeight)

var picJizhunWidth = deviceWidth / 1080
var picJizhunHeight = deviceWidth / 1080
log('当前基准：', picJizhunWidth, picJizhunHeight)

// 打开app
var appPackName = currentPackage();
if (appPackName != appPackageName) {
    app.launchPackage(appPackageName);
    log("运行抖音")
    sleep(5000 * 1)
    log("程序启动中")
} else {
    log("正在运行抖音");
}

sleep(3000)

var loopNum = 0;
var firstName = '';

function autoQuanFunc() {
    className("androidx.recyclerview.widget.RecyclerView").scrollable(true).findOne().children().forEach(child => {
        let target = child.findOne(className("android.widget.TextView"));
        sleep(500)
        if (firstName == target.text()) {
            loopNum = loopNum+1;
        }else{
            loopNum = 0;
        }
        firstName = target.text();
        if (target.text().indexOf("👍🏻") != -1) {
            log(target.text())
        } else {
            let target1 = child.findOne(className("android.widget.Button").text("互相关注"));
            if (target1) {
                log("!!!互相关注", target.text())
                target1.parent().click();
                sleep(1000)
                if(className("android.widget.TextView").text("取消关注").exists()){
                    text("取消关注").findOne().click()
                    sleep(500)
                }
            }else{
                let target2 = child.findOne(className("android.widget.Button").text("已关注"));
                if (target2) {
                    log("@@@已关注", target.text())
                    target2.parent().click();
                    sleep(1000)
                }
            }   
        }
    });
    swipeRandom(device.width * 0.5, device.height - 150, device.width * 0.5, 280, 1500);
    sleep(1000)
}

while (loopNum < 5) {
    autoQuanFunc()
}

toastLog('执行完成！')



// douyinUtils.checkOthers();


// // 函数方法
// // 点赞
// function DzFunc() {
//     press(device.width * 0.4, device.height * 0.4, 10);
//     sleep(50)
//     press(device.width * 0.4, device.height * 0.4, 10);
// }
// // 坐标验证
// function 坐标验证(weight) {
//     // 验证坐标是当前屏幕内容 
//     if (weight.left > 0 && weight.right > 0 && weight.top > 0 && weight.bottom > 0 && weight.top < deviceHeight && weight.bottom < deviceHeight) {
//         return true
//     } else {
//         return false
//     }
// }
// // 获取坐标
// function getPointFunc() {
//     var point = {};
//     // 等待出现评论按钮
//     descStartsWith("评论").waitFor()
//     log('正在获取坐标..')
//     // 评论
//     weight = descStartsWith("评论").findOne().bounds();
//     if (this.坐标验证(weight)) {
//         let obj = { x: weight.centerX(), y: weight.centerY() }
//         point.pinglun = obj
//         log('评论坐标', obj)
//     } else {
//         point.pinglun = {}
//         log('获取评论坐标失败')
//         point = storage.get("pointObj", { pinglun: {} })
//         return point;
//     }
//     // 关注
//     var weight = desc("关注").findOne().bounds();
//     if (this.坐标验证(weight)) {
//         let obj = { x: weight.centerX(), y: weight.centerY() }
//         point.guanzhu = obj
//         log('关注坐标', obj)
//     } else {
//         point.guanzhu = {}
//         log('未捕获关注坐标')
//         // 私信
//         weight = descStartsWith("私信").findOne().bounds();
//         if (this.坐标验证(weight)) {
//             let obj = { x: weight.centerX(), y: weight.centerY() }
//             point.sixin = obj
//             log('私信坐标', obj)
//         } else {
//             point.sixin = {}
//             log('获取私信坐标失败')
//         }
//     }
//     // 收藏
//     weight = descStartsWith("未选中").findOne().bounds();
//     if (this.坐标验证(weight)) {
//         let obj = { x: weight.centerX(), y: weight.centerY() }
//         point.shoucang = obj
//         log('收藏坐标', obj)
//     } else {
//         point.shoucang = {}
//         log('获取收藏坐标失败')
//     }
//     // 喜欢
//     if (point.pinglun.y && point.shoucang.y) {
//         let cha = point.shoucang.y - point.pinglun.y;
//         point.xihuan = { x: point.pinglun.x, y: (point.pinglun.y - cha) }
//     } else {
//         point.xihuan = {}
//         log('获取喜欢坐标失败')
//     }
//     // 分享
//     if (point.pinglun.y && point.shoucang.y) {
//         let cha = point.shoucang.y - point.pinglun.y;
//         point.fenxiang = { x: point.pinglun.x, y: (point.shoucang.y + cha) }
//     } else {
//         point.fenxiang = {}
//     }

//     log("存储坐标集：", point)
//     storage.put("pointObj", point)
//     return point;
// }
// // 获取点赞后图标位置
// function dzPicFunc(bloo) {
//     let thisImgs = images.read("./res/点赞.png");
//     thisImgs = images.scale(thisImgs, picJizhunWidth, picJizhunHeight)
//     let p2 = findImage(captureScreen(), thisImgs);
//     thisImgs.recycle();
//     if (p2) {
//         log('点赞图片位置：', p2)
//         if (bloo) {
//             dzPicChaObj.weizhi = p2;
//         }
//         sleep(500)
//         // 熄灭点赞
//         click(p2.x, p2.y)
//         sleep(1000)
//         return p2;
//     } else {
//         log('未获取到点赞图片信息，重新尝试')
//         DzFunc()
//         sleep(1000)
//         let thisImgs = images.read("./res/点赞.png");
//         thisImgs = images.scale(thisImgs, picJizhunWidth, picJizhunHeight)
//         let p2 = findImage(captureScreen(), thisImgs);
//         thisImgs.recycle();
//         if (p2) {
//             log('点赞图片位置：', p2)
//             if (bloo) {
//                 dzPicChaObj.weizhi = p2;
//             }
//             sleep(500)
//             // 熄灭点赞
//             click(p2.x, p2.y)
//             sleep(1000)
//             return p2;
//         } else {
//             log('点赞图片信息重新尝试失败！')
//             return dzPicChaObj.weizhi;
//         }
//     }
// }

// /**
//  * 上滑视屏，冷却时间一秒
//  */
// function nextVideo() {
//     log("上滑")
//     // eslint-disable-next-line no-undef
//     swipe(device.width * 0.6 + random(-20, 10), device.height * 0.55 + random(-20, 10),
//         device.width * 0.62 + random(-20, 10), device.height * 0.35 + random(-20, 10), 1);
//     sleep(1000);
//     log("冷却")
// }
// /**
//  * 下滑视屏，冷却时间一秒
//  */
// function lastVideo() {
//     log("下滑")
//     // eslint-disable-next-line no-undef
//     swipe(device.width * 0.6 + random(-20, 10), device.height * 0.35 + random(-20, 10),
//         device.width * 0.62 + random(-20, 10), device.height * 0.55 + random(-20, 10), 1);
//     log("冷却")
//     sleep(1000)
// }

// // 获取随机数
// function getRandomNumber(min, max) {
//     return Math.floor(Math.random() * (max - min + 1)) + min;
// }


// // 开始运行程序
// mainFunc();

// function mainFunc() {
//     //等待
//     sleep(1000)
//     // 打开app
//     var appPackName = currentPackage();
//     if (appPackName != appPackageName) {
//         app.launchPackage(appPackageName);
//         log("运行抖音")
//         sleep(5000 * 1)
//         log("程序启动中")
//     } else {
//         log("正在运行抖音");
//     }
//     //等待
//     sleep(2000)

//     log(new Date().getTime())
//     // 防止程序卡死
//     // threads.start(function () {
//     //     let jiancePoint = setTimeout(() => {
//     //         log('定时器执行了')
//     //         clearTimeout(jiancePoint)
//     //         if (!pointObj.pinglun.y) {
//     //             toastLog("捕获坐标异常，重启应用！")
//     //             sleep(1000)
//     //             openAppSetting(appPackageName);
//     //             text(app.getAppName(appPackageName)).waitFor();//通过包名获取已安装的应用名称，判断是否已经跳转至该app的应用设置界面
//     //             let is_sure = textMatches(/(.*强.*|.*停.*|.*结.*)/).findOne();//在app的应用设置界面找寻包含“强”，“停”，“结”，“行”的控件
//     //             if (is_sure.enabled()) {//判断控件是否已启用（想要关闭的app是否运行）
//     //                 sleep(500);
//     //                 is_sure.parent().click();//结束应用的控件如果无法点击，需要在布局中找寻它的父控件，如果还无法点击，再上一级控件，本案例就是控件无法点击
//     //                 sleep(1000);
//     //                 textMatches(/(.*确.*|.*定.*)/).findOne().click();//需找包含“确”，“定”的控件
//     //                 log("应用已被关闭");
//     //                 sleep(1000);
//     //                 back();
//     //                 sleep(1000);
//     //                 mainFunc();
//     //             } else {
//     //                 log("应用不能被正常关闭或不在后台运行");
//     //                 back();
//     //             }
//     //         }
//     //         // exit();
//     //         log('定时器线程关闭了')
//     //     }, 20000);
//     // })

//     // 按流程启动程序
//     zhuyeLiuchengFunc()

//     log(new Date().getTime())
// }

// function zhuyeLiuchengFunc() {
//     // 获取坐标
//     pointObj = getPointFunc();
//     // 存储在本地存储
//     // storage.put("pointObj", pointObj)
//     // 执行点赞 可能点到“挑战”
//     DzFunc()
//     sleep(1000)
//     // 获取点赞后位置信息
//     let dzPicPorit = dzPicFunc(true)
//     // 计算点赞图片与中心位置差值
//     if (pointObj.xihuan.y && dzPicPorit.y) {
//         dzPicChaObj.dzPicCha = dzPicPorit.y - pointObj.xihuan.y;
//         log("点赞图片匹配信息", dzPicChaObj)
//     } else {
//         log("位置信息存在偏差，请重启程序")
//     }
//     // 点击评论进入评论区
//     log('进入评论区')
//     click(pointObj.pinglun.x, pointObj.pinglun.y)
//     sleep(2000)
//     console.log("检测评论页");
//     if (text("善语结善缘，恶言伤人心").findOnce()) {
//         console.log("在评论区页面");
//     }
//     var t = textMatches(".*条评论.*|.*暂无评论.*").find();
//     if (t) {
//         console.log("加载评论完成");
//     }
//     // 空评论区
//     if (text("平等表达，友善交流").findOnce()) {
//         log('空评论区', '平等表达，友善交流')
//         back();
//         sleep(3000);
//         back();
//         sleep(3000);
//     } else {
//         sleep(1000);
//         for (let index = 0; index < pinglunfanye; index++) {
//             sleep(1000)
//             className("androidx.recyclerview.widget.RecyclerView").findOne().children().forEach(child => {
//                 // var target = child.findOne(id("title")); // 评论者
//                 // var target = child.findOne(id("dex")); // 评论者关系
//                 var target1 = child.findOne(id("content")); // 评论
//                 var target = child.findOne(descStartsWith("赞")); // 赞
//                 var target2 = child.findOne(className("android.widget.TextView").text("回复")); // 回复
//                 // target.click();
//                 if (target1) { // 可能存在空元素
//                     let contStr = String(target1.text());
//                     // 符合匹配规则并且有回复按钮 因为有些信息没有回复按钮
//                     if (contStr.match(pinglunReg) && target2) {
//                         let bounds = target.bounds()
//                         let bounds2 = target2.bounds()
//                         log("进行评论")
//                         let anquanqu = deviceHeight - 200;
//                         // 判断是否在安全区
//                         if (bounds.centerY() < anquanqu) {
//                             click(bounds2.centerX(), bounds2.centerY())
//                             log('评论：', contStr)
//                             let sentText = getRandomNumber(0, pinglunsList.length - 1)
//                             sentText = pinglunsList[sentText]
//                             douyinUtils.sentMsg(sentText)
//                             sleep(2000)
//                         } else {
//                             log('安全区外内容', contStr)
//                         }
//                     } else {
//                         log('跳过评论：', contStr)
//                     }
//                 }
//             })
//             sleep(1000)
//             douyinUtils.commentNextPage(1);
//             sleep(2000)
//             if (text('暂时没有更多了').findOnce()) {
//                 back();
//                 sleep(3000);
//                 log('暂时没有更多了')
//                 break;
//             }
//         }
//         // 关闭评论页
//         back();
//         sleep(1000);
//     }

//     // 循环执行
//     while (true) {
//         loopShipinFunc();
//     }

// }


// function loopShipinFunc() {
//     log('@@又一轮循环')
//     // 下一个视频
//     nextVideo()
//     sleep(1000)
//     // 执行点赞
//     DzFunc()
//     sleep(1000)
//     // 获取点赞后位置信息
//     let dzPicPoritXz = dzPicFunc()
//     // 计算点赞后坐标位置是否位移
//     let dianzanCha = dzPicChaObj.weizhi.y - dzPicPoritXz.y;
//     // 如果位移
//     if (Math.abs(dianzanCha) > 10) {
//         log('操作位置浮动', dianzanCha)
//         // 更新新坐标
//         dzPicChaObj.weizhi = dzPicPoritXz;
//         for (let key in pointObj) {
//             if (Object.hasOwnProperty.call(pointObj, key)) {
//                 let forObj = pointObj[key];
//                 pointObj[key].y = forObj.y - dianzanCha
//             }
//         }
//         log('操作区更新后', pointObj)
//     } else {
//         log('操作位置不变')
//     }

//     // 点击评论进入评论区
//     log('进入评论区')
//     click(pointObj.pinglun.x, pointObj.pinglun.y)
//     sleep(2000)
//     console.log("检测评论页");
//     if (text("善语结善缘，恶言伤人心").findOnce()) {
//         console.log("在评论区页面");
//     }
//     var t = textMatches(".*条评论.*|.*暂无评论.*").find();
//     if (t) {
//         console.log("加载评论完成");
//     }
//     if (text("平等表达，友善交流").findOnce()) {
//         log('平等表达，友善交流')
//         back();
//         sleep(3000);
//         back();
//         sleep(3000);
//         return
//     }

//     sleep(1000);
//     for (let index = 0; index < pinglunfanye; index++) {
//         sleep(1000)
//         className("androidx.recyclerview.widget.RecyclerView").findOne().children().forEach(child => {
//             // var target = child.findOne(id("title")); // 评论者
//             // var target = child.findOne(id("dex")); // 评论者关系
//             var target1 = child.findOne(id("content")); // 评论
//             var target = child.findOne(descStartsWith("赞")); // 赞
//             var target2 = child.findOne(className("android.widget.TextView").text("回复")); // 回复
//             // target.click();
//             if (target1) { // 可能存在空元素
//                 let contStr = String(target1.text());
//                 // 符合匹配规则并且有回复按钮 因为有些信息没有回复按钮
//                 if (contStr.match(pinglunReg) && target2) {
//                     let bounds = target.bounds()
//                     let bounds2 = target2.bounds()
//                     log(bounds)
//                     let anquanqu = deviceHeight - 200;
//                     // 判断是否在安全区
//                     if (bounds.centerY() < anquanqu) {
//                         click(bounds2.centerX(), bounds2.centerY())
//                         log('评论：', contStr)
//                         let sentText = getRandomNumber(0, pinglunsList.length - 1)
//                         sentText = pinglunsList[sentText]
//                         douyinUtils.sentMsg(sentText)
//                         sleep(2000)
//                     } else {
//                         log('安全区外内容', contStr)
//                     }
//                 } else {
//                     log('跳过评论：', contStr)
//                 }
//             }
//         })
//         sleep(1000)
//         douyinUtils.commentNextPage(1);
//         sleep(2000)
//         if (text('暂时没有更多了').findOnce()) {
//             back();
//             sleep(3000);
//             log('暂时没有更多了')
//             break;
//         }
//     }
//     // 关闭评论页
//     back();
//     sleep(1000);

// }



// 打开抖音评论页面
// douyinUtils.toComment();

// 评论区
// id("ry7").findOne().children().forEach(child => {
//     var target = child.findOne(id("title")); // 评论者
//     var target = child.findOne(id("dex")); // 评论者关系
//     var target1 = child.findOne(id("content")); // 评论
//     var target = child.findOne(id("r8l")); // 回复按钮id de- 时间 dbt IP地址
//     // target.click();
//     log(target1.text() ) 
// });

// // 评论区输入框
// id('dab').findOne().click();
// sleep(1500)
// // 评论区输入框
// id('dab').findOne().setText("大家好才是真的好！");
// sleep(1500)
// // 评论发送按钮
// id('ddd').findOne().click();
// sleep(2500)
// douyinUtils.commentNextPage(1);
// text('暂时没有更多了').waitFor()

// id("ry7").findOne().children().forEach(child => {
//     // var target = child.findOne(id("title")); // 评论者
//     // var target = child.findOne(id("dex")); // 评论者关系
//     var target1 = child.findOne(id("content")); // 评论
//     // var target = child.findOne(id("r8l")); // 回复按钮id de- 时间 dbt IP地址 ew= 点赞
//     // target.click();
//     if (target1) { // 可能存在空元素
//         let contStr = String(target1.text() );
//         let reg = RegExp(/好|觉悟/);
//         if(contStr.match(reg)){
//             log(contStr)
//           }else{
//             log('0',contStr)
//         }
//     }



// });

log('结束')
sleep(2000)